import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;

/**
 * @description: 线程示例
 * @author: zys
 * @create: 2020-10-12 10:45
 **/
public class MultiThread {

    public static void main(String[] args) {
        //获取java的线程管理MXBean
        ThreadMXBean threadMXBean = ManagementFactory.getThreadMXBean();
        //获取线程和线程堆栈信息 不需要获取Monitor 和 Synchronize的信息
        ThreadInfo[] threadInfos = threadMXBean.dumpAllThreads(false, false);

        //打印线程id和线程名称信息
        for (ThreadInfo threadInfo : threadInfos) {
            System.out.println("[" + threadInfo.getThreadId() + "]" + threadInfo.getThreadName());
        }
    }

    /**
     * [6]Monitor Ctrl-Break 监听中断信号
     * [5]Attach Listener  线程是负责接收到外部的命令，而对该命令进行执行的并且吧结果返回给发送者。
     * [4]Signal Dispatcher  分发处理给jvm的信号
     * [3]Finalizer  调用对象的Finalizer 方法
     * [2]Reference Handler  清除Reference线程
     * [1]main main线程 程序入口
     * */

}
